//INCLUDES//
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//INCLUDES//



//CLASS NODE//
class node
{	
public:
	//VARiABLES//
	std::string name;
	vector<node*> child;
	static int node_id;
	static int space;
	int spacesPerNode;
	//VARIABLES//

	//FUNCTIONS//
	node(const std::string&);
	virtual ~node();
	const std::string get_name();
	void set_name(std::string);
	const int get_nr_children();
	node* get_child(int i);
	void add_child(node *i);
	const int countAllLowerNodes();
	//FUNCTIONS//
};
//CLASS NODE//



//EXTERN FUNCTIONS//
extern ostream& operator <<(ostream& stream, node* n);
extern node* create_complete_tree(unsigned int, unsigned int);
//EXTERN FUNCTIONS//